package com.client.rule.decision;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.client.data.ProduitListGrid;
import com.client.service.data.ProduitDataService;
import com.client.service.data.ProduitDataServiceAsync;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.shared.model.Produit;
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.widgets.grid.events.CellClickEvent;
import com.smartgwt.client.widgets.grid.events.CellClickHandler;

public class ProduitEditorDialogBox extends DecisionEditorDialogBox{

	
	private Produit produitSelected = null;
	private ProduitListGrid listGrid = new ProduitListGrid();
	private List<Produit> list = new ArrayList<Produit>();
	
	private final ProduitDataServiceAsync dataService = GWT.create(ProduitDataService.class);
	
	public ProduitEditorDialogBox() {
		super();
		listGrid.setSelectionType(SelectionStyle.SINGLE);
		
		setText("Edition de Decision produit");
		setWidth("1500px");
		setHeight("500px");
		
		VerticalPanel mainPanel = new VerticalPanel();	
		mainPanel.setSpacing(5);
		mainPanel.setWidth("1500px");
		mainPanel.setHeight("500px");	
		
		HorizontalPanel nomPanel = new HorizontalPanel();
		nomPanel.add(new Label("Nom :"));
		nomPanel.add(nomTextBox);
		mainPanel.add(nomPanel);
		
		dataService.getList(new AsyncCallback<List>() {			
			public void onSuccess(List result) {
				list = result;
				for(Produit p : list){
					listGrid.addData(p);			
				}			
			}
			
			public void onFailure(Throwable caught) {
				Window.alert(caught.getMessage());
				
			}
		});
		
		listGrid.addCellClickHandler(new CellClickHandler() {			
			public void onCellClick(CellClickEvent event) {
				produitSelected = list.get(event.getRowNum());				
			}
		});
				
		
		mainPanel.add(listGrid);
		mainPanel.add(panelButton);
		setWidget(mainPanel);
		setAnimationEnabled(true);
	}
	
	@Override
	public Map<String, String> getDecisionData() throws IllegalArgumentException{
		check();
		Map<String,String> result = new HashMap<String, String>();		
		result.put("idProduit", String.valueOf(produitSelected.getKey()));
		return result;
	}
	
	@Override
	public void check() throws IllegalArgumentException {
		super.check();
		if(produitSelected==null) throw new IllegalArgumentException("Vous devez sélectionner un produit");
	}

}
